import os


def do_fork():
    print("进程({pid})开始...".format(pid=os.getpid()))
    # fork()调用一次，返回两次（操作系统自动把当前进程[称为父进程]复制一份[称为子进程]，然后分别在父进程和子进程内返回）
    # 子进程永远返回0，父进程返回子进程的ID

    # 应用：
    #   Apache服务器就是由父进程监听端口，每当有新的http请求时，就fork出子进程来处理新的http请求。
    pid = os.fork()
    if pid == 0:
        print("我是子进程（{child_pid}），我的父进程是（{parent_pid}）".format(child_pid=os.getpid(), parent_pid=os.getppid()))
    else:
        print("我（{self_pid}）创建子进程（{child_pid}）".format(self_pid=os.getpid(), child_pid=pid))


if __name__ == "__main__":
    # 只能运行在Unix/Linux/Mac上
    do_fork()
